package com.southminority.ethnic.service.research;

import com.southminority.ethnic.controller.research.vo.ResearchProgressVO;
import java.util.List;

/**
 * 研究进展服务接口
 * 
 * @author SouthMinority
 */
public interface ResearchProgressService {

    /**
     * 获取所有研究进展列表
     * @return 研究进展列表
     */
    List<ResearchProgressVO> getResearchProgressList();

    /**
     * 获取所有研究进展列表（按组织过滤）
     * @param organizationId 归属机构ID，可为空
     * @return 研究进展列表
     */
    List<ResearchProgressVO> getResearchProgressList(Long organizationId);

    /**
     * 获取时间线展示的研究进展列表
     * @return 按时间线排序的研究进展列表
     */
    List<ResearchProgressVO> getTimelineResearchProgressList();

    /**
     * 获取时间线展示的研究进展列表（按组织过滤）
     * @param organizationId 归属机构ID，可为空
     * @return 按时间线排序的研究进展列表
     */
    List<ResearchProgressVO> getTimelineResearchProgressList(Long organizationId);

    /**
     * 获取重点展示的研究进展列表
     * @return 重点研究进展列表
     */
    List<ResearchProgressVO> getFeaturedResearchProgressList();

    /**
     * 获取重点展示的研究进展列表（按组织过滤）
     * @param organizationId 归属机构ID，可为空
     * @return 重点研究进展列表
     */
    List<ResearchProgressVO> getFeaturedResearchProgressList(Long organizationId);

    /**
     * 获取研究进展详情
     * @param id 研究进展ID
     * @return 研究进展详情
     */
    ResearchProgressVO getResearchProgressDetail(Long id);

    /**
     * 根据项目ID获取研究进展列表
     * @param projectId 项目ID
     * @return 研究进展列表
     */
    List<ResearchProgressVO> getResearchProgressByProject(Long projectId);

    /**
     * 根据研究领域获取研究进展列表
     * @param researchField 研究领域
     * @return 研究进展列表
     */
    List<ResearchProgressVO> getResearchProgressByField(String researchField);

    /**
     * 获取最近的研究进展（限制数量）
     * @param limit 限制数量
     * @return 最近的研究进展列表
     */
    List<ResearchProgressVO> getRecentResearchProgress(Integer limit);

    /**
     * 获取最近的研究进展（限制数量，按组织过滤）
     * @param limit 限制数量
     * @param organizationId 归属机构ID，可为空
     * @return 最近的研究进展列表
     */
    List<ResearchProgressVO> getRecentResearchProgress(Integer limit, Long organizationId);
} 
